package com.novunda.platform.repositories;

import com.novunda.platform.common.repositories.BaseRepository;
import com.novunda.platform.entities.EmailInfo;
import com.novunda.platform.entities.base.BaseEntity;
import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;

import javax.transaction.Transactional;
import java.util.List;

/**
 * 邮件服务器数据库操作
 * Created by YJY on 2016/9/12.
 */
public interface EmailRepository extends BaseRepository<EmailInfo, Long> {

    /**
     * 根据id查询邮件信息
     *
     * @param id 邮件服务器id
     * @return 邮件服务器信息
     */
    @Query("from EmailInfo where id = ?1")
    EmailInfo get(Long id);

    /**
     * 根据机构名称和用户名分页查询邮件服务器信息
     *
     * @param organization 机构名称
     * @param username     用户名
     * @param currentPage  当前页
     * @param pageSize     每页显示大小
     * @return 邮件服务器信息
     */
    @Query("from EmailInfo where organization = ?1 and email = ?2")
    EmailInfo queryEmailInfo(String organization, String email);

    /**
     * 根据机构查询邮件服务器信息
     * @param organization  机构名称
     * @return 邮件服务器列表
     */
    @Query("from EmailInfo where organization = ?1")
    List<EmailInfo> queryEmailInfo(String organization);

    /**
     * 根据id删除邮件服务器
     * @param id id
     */
    @Transactional
    @Modifying
    @Query("DELETE FROM EmailInfo WHERE id = ?1")
    void deleteEmail(Long id);
}
